package com.hiultra.archive.service;

import com.hiultra.archive.domain.ArcBox;
import com.hiultra.archive.domain.ArcDossier;
import com.hiultra.archive.domain.ArcFamily;
import com.hiultra.archive.domain.vo.ResultEntity;

import java.util.List;

/**
 * 档案盒管理Service接口
 *
 * @author ls
 * @date 2022-07-28
 */
public interface IArcBoxService
{
    /**
     * 查询档案盒管理
     *
     * @param boxId 档案盒管理主键
     * @return 档案盒管理
     */
    public ArcBox selectArcBoxByBoxId(String boxId);
    /**
     * 查询档案盒根据rfid
     *
     * @param boxRfids 档案盒管理主键
     * @return 档案盒管理
     */
    public List<ArcBox> selectArcBoxListByRfid(List<String> boxRfids);
    /**
     * 查询档案盒管理列表
     *
     * @param arcBox 档案盒管理
     * @return 档案盒管理集合
     */
    public List<ArcBox> selectArcBoxList(ArcBox arcBox);

    /**
     * 新增档案盒管理
     *
     * @param arcBox 档案盒管理
     * @return 结果
     */
    public int insertArcBox(ArcBox arcBox);

    /**
     * 修改档案盒管理
     *
     * @param arcBox 档案盒管理
     * @return 结果
     */
    public int updateArcBox(ArcBox arcBox);

    /**
     * 批量删除档案盒管理
     *
     * @param boxIds 需要删除的档案盒管理主键集合
     * @return 结果
     */
    public int deleteArcBoxByBoxIds(String[] boxIds);

    /**
     * 删除档案盒管理信息
     *
     * @param boxId 档案盒管理主键
     * @return 结果
     */
    public int deleteArcBoxByBoxId(String boxId);

    /**
     * 导入档案盒数据
     *
     * @param boxList 档案盒数据列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作用户
     * @return 结果
     */
    public String importBox(List<ArcBox> boxList, Boolean isUpdateSupport, String operName);

    /**
     * 校验档案盒号称是否唯一
     *
     * @param arcBox 档案盒
     * @return 结果
     */
    public String checkBoxCodeUnique(ArcBox arcBox);

    /**
     * 批量打印标签
     *
     * @param boxIds 主键集合
     * @return 结果
     */
    public List<ArcBox> batchPrint(String[] boxIds);

    /**
     * 修改档案盒位置
     *
     * @param arcBox 档案盒管理
     * @return 结果
     */
    public int editPosition(ArcBox arcBox);

    /**
     * 批量新增档案盒管理
     *
     * @param arcBoxList 档案盒管理
     * @return 结果
     */
    public int batchInsertArcBox(List<ArcBox> arcBoxList);

    /**
     * 新增档案袋接口（省侧下发）
     *
     * @param data
     * @return 结果
     */
    public ResultEntity insertIssuedArcBox(String data);

    /**
     * 操作密集架
     *
     * @param arcBox 档案盒管理
     * @return 结果
     */
    public int operationShelvesByBoxNo(ArcBox arcBox);
}
